import { store, clearImg, getTime } from 'shenjian-tools/src';

/**
 * Object.assign 方法
 */
export function assign(target: any, ...sources: any[]): any {
  for (let source, i = 0; i < sources.length; i++) {
    source = sources[i];
    for (let prop in source) {
      if (Object.prototype.hasOwnProperty.call(source, prop)) {
        target[prop] = source[prop];
      }
    }
  }
  return target;
}

/**
 * 自动提取字段
 * @param fields
 */
export function extractFields(
  fieldName: string,
  data: string,
  page: Shenjian.Page,
  site: Shenjian.Site,
  index: number,
) {
  // 新闻地址
  if (fieldName === 'newsurl') {
    return page.url;
  }

  // 新闻内容
  if (fieldName === 'content') {
    data = data
      .replace(/<!--[\s\S]+?-->/g, '') // 删除多余注释
      .replace(/<(script)[^>]*>[\s\S]+?<\/?\1>/g, '') // 删除脚本
      .trim();
    return clearImg(data);
  }

  const obj = store.get(page.url);

  if (!obj || obj[fieldName] === undefined) {
    return data;
  }

  // 用平台 api 抽取图片
  if (fieldName === 'image') {
    return hostFile(obj[fieldName], FileType.IMAGE);
  }

  // 时间处理
  if (fieldName === 'time') {
    const dt = getTime(data);
    return String(+dt).slice(0, 10);
  }

  return obj[fieldName];
}
